unit clsVariacaoProduto;

interface

uses Dm, dbtables, biblio, SysUtils;

type
  TVariacaoProduto = class(tobject)
  private
    pro_codigo: string;
    pro_codigo2: string;
    pro_codigo3: string;
  public
    Var_quantidade: double;
    Var_MostraDesc: string;
    function Gravar(p_Pro_codigo, p_pro_codigo2, p_Pro_codigo3: string): byte;
    function Recuperar(p_Pro_codigo, p_pro_codigo2, p_Pro_codigo3: string): byte;
    function Recuperar1(p_Pro_codigo: string): string;
    function Recuperar2(p_Pro_codigo, p_Pro_codigo3: string): byte;
    function Excluir(p_Pro_codigo, p_pro_codigo2, p_Pro_codigo3: string): Byte;
    function ExcluirVariacao(p_Pro_codigo, p_pro_codigo2: string): Byte;
    function ExcluirProduto(p_pro_codigo: string): byte;
    function ConsultarProduto(P_Pro_codigo: string): byte;
    function ConsultarVariacao2(p_Pro_codigo, p_pro_codigo2: string): byte;
    procedure Consultar(var p_q: TQuery; p_Pro_codigo, p_pro_codigo2, p_Pro_codigo3: string);
    procedure ConsultarVariacao(var p_q: TQuery; p_Pro_codigo, p_pro_codigo2: string);
    procedure ConsultarVariacao3(var p_q: TQuery; p_Pro_codigo: string);
    procedure ConsultarVariacao4(var p_q: TQuery; p_Pro_codigo2: string);
    function TemReferenciaVariacao(p_Prod1, p_Prod2: string): Boolean;
  end;
implementation

{ TVariacaoProduto }

procedure TVariacaoProduto.Consultar(var p_q: TQuery; p_Pro_codigo,
  p_pro_codigo2, p_Pro_codigo3: string);
begin
  p_q.sql.Clear;
  p_q.Params.Clear;
  p_q.sql.add('Select * from variacaoproduto where Pro_Codigo=:k_pro_codigo and pro_codigo2=:k_pro_codigo2 and pro_codigo3=:k_pro_codigo3');
  p_q.parambyname('k_Pro_Codigo').asstring := p_pro_codigo;
  p_q.parambyname('k_pro_Codigo2').asstring := p_pro_codigo2;
  p_q.parambyname('k_pro_Codigo3').asstring := p_pro_codigo3;
end;

function TVariacaoProduto.ConsultarProduto(P_Pro_codigo: string): byte;
var
  tq: TQuery;
begin
  tq := TQuery.create(DmInt.Db);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := false;
  tq.sql.Clear;
  tq.Params.clear;
  tq.sql.add('Select * from variacaoproduto where pro_codigo=:k_Pro_codigo');
  tq.Params[0].AsString := P_Pro_codigo;
  tq.open;
  if not tq.eof then
    Result := 1
  else
    Result := 0;
  tq.close;
  tq.free;
end;

procedure TVariacaoProduto.ConsultarVariacao(var p_q: TQuery; p_Pro_codigo,
  p_pro_codigo2: string);
begin
  p_q.sql.Clear;
  p_q.Params.Clear;
  p_q.sql.add('Select * from variacaoproduto where Pro_Codigo=:k_pro_codigo and pro_codigo2=:k_pro_codigo2');
  p_q.parambyname('k_Pro_Codigo').asstring := p_pro_codigo;
  p_q.parambyname('k_pro_Codigo2').asstring := p_pro_codigo2;
end;

function TVariacaoProduto.ConsultarVariacao2(p_Pro_codigo,
  p_pro_codigo2: string): byte;
var
  tq: TQuery;
begin
  tq := TQuery.create(DmInt.Db);
  tq.DatabaseName := DmInt.Db.DatabaseName;
  tq.Active := false;
  tq.Close;
  tq.sql.Clear;
  tq.Params.clear;
  tq.sql.add('Select * from variacaoproduto where pro_codigo=:k_Pro_codigo and pro_codigo2=:K_Pro_codigo2');
  tq.Params[0].AsString := P_Pro_codigo;
  tq.Params[1].AsString := P_Pro_codigo2;
  tq.open;
  if tq.eof then
    Result := 0
  else
    Result := 1;
  tq.close;
  tq.free;
end;

procedure TVariacaoProduto.ConsultarVariacao3(var p_q: TQuery;
  p_Pro_codigo: string);
begin
  p_q.sql.Clear;
  p_q.Params.Clear;
  p_q.sql.add('Select * from variacaoproduto where Pro_Codigo=:k_pro_codigo');
  p_q.parambyname('k_Pro_Codigo').asstring := p_pro_codigo;
end;

procedure TVariacaoProduto.ConsultarVariacao4(var p_q: TQuery;
  p_Pro_codigo2: string);
begin
  p_q.sql.Clear;
  p_q.Params.Clear;
  p_q.sql.add('Select * from variacaoproduto where Pro_Codigo2=:k_pro_codigo2');
  p_q.parambyname('k_Pro_Codigo2').asstring := p_pro_codigo2;
end;

function TVariacaoProduto.Excluir(p_Pro_codigo, p_pro_codigo2,
  p_Pro_codigo3: string): Byte;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.databasename := dmint.db.databasename;
  tq.active := False;
  tq.close;
  tq.sql.Clear;
  tq.params.clear;
  tq.sql.add('DELETE FROM variacaoproduto WHERE Pro_codigo=:k_Pro_codigo and pro_Codigo2=:k_pro_Codigo2 and pro_codigo3=:K_Pro_codigo3');
  tq.parambyname('k_Pro_codigo').asstring := p_Pro_codigo;
  tq.parambyname('k_pro_codigo2').asstring := p_pro_codigo2;
  tq.parambyname('k_pro_codigo3').asstring := p_pro_codigo3;
  try
    tq.execSQL;
    Result := 1;
  except
    Result := 0;
  end;
  tq.close;
  tq.Free;
end;

function TVariacaoProduto.ExcluirProduto(p_pro_codigo: string): byte;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.databasename := dmint.db.databasename;
  tq.active := False;
  tq.close;
  tq.sql.Clear;
  tq.params.clear;
  tq.sql.add('DELETE FROM variacaoproduto WHERE Pro_codigo=:k_Pro_codigo');
  tq.parambyname('k_Pro_codigo').asstring := p_Pro_codigo;
  try
    tq.execSQL;
    Result := 1;
  except
    Result := 0;
  end;
  tq.close;
  tq.Free;
end;

function TVariacaoProduto.ExcluirVariacao(p_Pro_codigo,
  p_pro_codigo2: string): Byte;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.databasename := dmint.db.databasename;
  tq.active := False;
  tq.close;
  tq.sql.Clear;
  tq.params.clear;
  tq.sql.add('DELETE FROM variacaoproduto WHERE Pro_codigo=:k_Pro_codigo and pro_Codigo2=:k_pro_Codigo2');
  tq.parambyname('k_Pro_codigo').asstring := p_Pro_codigo;
  tq.parambyname('k_pro_codigo2').asstring := p_pro_codigo2;
  try
    tq.execSQL;
    Result := 1;
  except
    Result := 0;
  end;
  tq.close;
  tq.Free;
end;

function TVariacaoProduto.Gravar(p_Pro_codigo, p_pro_codigo2,
  p_Pro_codigo3: string): byte;
var
  tq: TQuery;
begin
  tq := Tquery.Create(DmInt);
  tq.databasename := dmint.Db.DatabaseName;
  tq.active := False;
  tq.sql.clear;
  tq.params.clear;
  tq.sql.add('SELECT * FROM VariacaoProduto where Pro_codigo=:k_Pro_codigo and Pro_Codigo2=:k_pro_Codigo2 and Pro_codigo3=:K_Pro_codigo3');
  tq.parambyname('k_Pro_codigo').asstring := p_Pro_codigo;
  tq.parambyname('k_pro_codigo2').asstring := p_pro_codigo2;
  tq.ParamByName('K_Pro_codigo3').AsString := pro_codigo3;
  tq.open;

  if tq.eof then begin
    tq.close;
    tq.sql.clear;
    tq.params.clear;
    tq.sql.add('INSERT INTO variacaoproduto VALUES(:k_Pro_codigo, :k_pro_Codigo2, :k_pro_codigo3, :K_var_Quantidade, :K_Var_MostraDesc)');
  end else begin
    tq.close;
    tq.sql.clear;
    tq.params.clear;
    tq.sql.add('UPDATE variacaoproduto SET var_quantidade=:k_var_quantidade,Var_MostraDesc=:K_Var_MostraDesc ' +
      'WHERE Pro_codigo=:k_Pro_codigo and pro_Codigo2=:k_pro_Codigo2 and Pro_codigo3=:k_Pro_codigo3');
  end;
  tq.parambyname('k_Pro_codigo').asstring := p_Pro_codigo;
  tq.parambyname('k_pro_codigo2').asstring := p_pro_codigo2;
  tq.parambyname('k_pro_codigo3').asstring := p_pro_codigo3;
  tq.ParamByName('K_var_quantidade').AsFloat := var_Quantidade;
  tq.ParamByName('K_Var_MostraDesc').asstring := Var_MostraDesc;
  tq.close;

  try
    tq.execsql;
    Result := 1;
  except
    Result := 0;
  end;
  tq.close;
  tq.Free;
end;

function TVariacaoProduto.Recuperar(p_Pro_codigo, p_pro_codigo2,
  p_Pro_codigo3: string): byte;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.databasename := DmInt.Db.DatabaseName;
  tq.active := False;
  tq.sql.clear;
  tq.sql.add('SELECT * FROM variacaoproduto WHERE Pro_codigo=:k_Pro_codigo and pro_Codigo2=:k_pro_Codigo2 and pro_Codigo3=:k_pro_Codigo3');
  tq.Params[0].asstring := p_Pro_codigo;
  tq.params[1].asstring := p_pro_codigo2;
  tq.params[2].asstring := p_pro_codigo3;
  tq.open;

  Pro_codigo := p_Pro_codigo;
  pro_Codigo2 := p_pro_Codigo2;
  pro_codigo3 := p_Pro_codigo3;

  if tq.eof then begin
    var_Quantidade := 0;
    Var_MostraDesc := '';
    Result := 0;
  end else begin
    var_Quantidade := tq.fieldbyname('var_quantidade').Asfloat;
    Var_MostraDesc := tq.fieldByName('Var_MostraDesc').asstring;
    Result := 1;
  end;
  tq.Close;
  tq.Free;
end;

function TVariacaoProduto.Recuperar1;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.databasename := DmInt.Db.DatabaseName;
  tq.active := False;
  tq.sql.clear;
  tq.sql.add('SELECT * FROM variacaoproduto WHERE Pro_codigo=:k_Pro_codigo');
  tq.Params[0].asstring := p_Pro_codigo;
  tq.open;
  Result := tq.fieldByName('Pro_Codigo2').asstring;
  tq.Close;
  tq.Free;
end;

function TVariacaoProduto.Recuperar2;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.databasename := DmInt.Db.DatabaseName;
  tq.active := False;
  tq.sql.clear;
  tq.sql.add('SELECT * FROM variacaoproduto WHERE Pro_codigo=:k_Pro_codigo and pro_Codigo3=:k_pro_Codigo3');
  tq.Params[0].asstring := p_Pro_codigo;
  tq.params[1].asstring := p_pro_codigo3;
  tq.open;

  if tq.eof then begin
    var_Quantidade := 0;
    Var_MostraDesc := '';
    Result := 0;
  end else begin
    var_Quantidade := tq.fieldbyname('var_quantidade').Asfloat;
    Var_MostraDesc := tq.fieldByName('Var_MostraDesc').asstring;
    Result := 1;
  end;
  tq.Close;
  tq.Free;
end;

function TVariacaoProduto.TemReferenciaVariacao;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.databasename := DmInt.Db.DatabaseName;
  tq.active := False;
  tq.sql.clear;
  tq.sql.add('Select * from Ficha where Pro_Codigo =:Prod and Pro_Codigo2 =:Prod2 and ' +
    'Fic_Referencia = ' + QuotedStr('S') + ' ');
  tq.params[0].asstring := p_prod1;
  tq.params[1].asstring := p_prod2;
  tq.Open;
  if not tq.eof then Result := True
  else Result := False;
  tq.Close;
  tq.free;
end;

end.
